home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / modelers / geomview / source.lha / Geomview / src / bin / graffiti / graffiti.c < prev    next >
C/C++ Source or Header  |  1992-12-03  |  1KB  |  90 lines

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include "graffiti.h"
  4.  
  5. #define MAXVERTS 1000
  6.  
  7. int newvect = 1;
  8. int wrap = 0;
  9. short nverts = 0;
  10. Point3 verts[MAXVERTS];
  11. int onlyverts = 0;
  12. char *headname = "graffiti-head";
  13. char *tailname = "graffiti-tail";
  14. char *headxformname = "graffiti-head-xform";
  15. char *tailxformname = "graffiti-tail-xform";
  16. char *graffitiname = "graffiti";
  17.  
  18. main(int argc, char *argv[])
  19. {
  20.   Initialize();
  21.   gui_init();
  22.   gui_main_loop();
  23. }
  24.  
  25. NewPLine()
  26. {
  27.   nverts = 0;
  28. }
  29.  
  30. NewLine()
  31. {
  32.   if (!newvect) {
  33.     EraseHeadAndTail();
  34.     StartNewVector();
  35.     NewPLine();
  36.     newvect = 1;
  37.     wrap = 0;
  38.   }
  39. }
  40.  
  41. Initialize()
  42. {
  43.   LangInit(stdout);
  44.   NewPLine();
  45. }
  46.  
  47. void
  48. AddVertex(Point3 *p)
  49. {
  50.   progn();
  51.  
  52.   /* if this is the first vertex of this pline, draw the tail here */
  53.   if (nverts == 0) {
  54.     ShowTailAt(p);
  55.   } else {
  56.     /* otherwise draw the head here, pointing along last segment */
  57.     ShowHeadAt(p, &verts[nverts-1]);
  58.   }
  59.  
  60.   if (nverts < MAXVERTS) {
  61.     verts[nverts] = *p;
  62.     ++nverts;
  63.   }
  64.   Geometry();
  65.   endprogn();
  66. }
  67.  
  68. RemoveVertex()
  69. {
  70.   if (!nverts) return;
  71.   --nverts;
  72.  
  73.   progn();
  74.   Geometry();
  75.   if (nverts == 0) { /* if we are down to 0 vertices, nuke head and tail */
  76.     EraseHeadAndTail();
  77.   } else if (nverts == 1) { /* if just 1 vertex nuke head */
  78.     EraseHead();
  79.   } else if (nverts > 1) { /* if > 1 vertex, move head to last one */
  80.     ShowHeadAt(&verts[nverts-1], &verts[nverts-2]);
  81.   }
  82.   endprogn();
  83. }
  84.  
  85. Close()
  86. {
  87.   wrap = 1;
  88.   Geometry();
  89. }
  90.